package collection;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/*
 *  知识点3
 *  java.util.List集合
 *  list集合提供了通过下标操作元素
 *  LinkedList 链表形式 适合查询操作
 *  ArrayList  数组形式 查询速度慢 适合首尾插入元素使用
 *  知识点 3,4,5 中的方法都是通过下标(index)进行的操作 所以只有list数组才可以使用
 * */
public class ListDemo {
    public static void main(String[] args) {
        List<String> array = new ArrayList<String>();
        List<String> linked = new LinkedList<String>();

        array.add("one");
        array.add("two");
        array.add("three");
        array.add("four");
        array.add("five");
        System.out.println("list:" + array);

        /*
         * 由List接口提供的方法(和Collection没啥关系)
         * */

        // E get(int Index); 通过下表(Index)获取集合中的元素(下标同样是从0开始)
        System.out.println(array.get(2));
        System.out.println(array.get(0));

        //因为List集合可以通过get(下标)获取元素位置 所以可以通过for循环遍历集合
        for (int i = 0; i < array.size(); i++) {
            System.out.println(array.get(i)); //通过get方法遍历集合元素
        }

        // E set(int indexm, E e) ; 将给定的元素设置到制定位置，并返回被替换的元素
        String s = array.set(2, "six");
        System.out.println("被替换的元素:" + s);
        System.out.println("List:" + array);

        String s1;
        String s2;
        //循环次数不/2的话就又交换回来了
        for (int i = 0; i < array.size() / 2; i++) {
            //s1 = array.get(i); //获取当前i的下标元素
            // System.out.println(s1);
            //s2 = array.set(array.size()-1-i,s1); //将元素长度-1-i位置的元素 替换为s1 并将被替换的元素返回
            // System.out.println(s2);
            array.set(i, array.set(array.size() - 1 - i, array.get(i)));
        }
        System.out.println("交换之后:" + array);
    }
}
